1. Field of the Invention
This invention relates to an image signal interpolating circuit adapted for calculating interpolated values between respective pixels on the basis of a plurality of pixel data.
2. Description of the Prior Art
Hitherto, in the case of transmitting image or picture data of a moving picture, for the purpose of reducing the quantity of data transmitted, a technique is frequently adopted to compress such data quantity using many methods. For example consider a case, as shown in FIG. 6, where a pictorial image of an arbitrary block B.sub.n comprised of a plurality of pixels (e.g., pixels of 8.times.8 dots) on a picture of a frame F.sub.n shifts or moves to the position of a block B.sub.n+1 of a frame F.sub.n+1. Pictures (pictorial images) of frames preceding and succeeding in time (frames F.sub.n and F.sub.n+1) are compared with each other to detect so called a motion vector indicating a direction of movement and a quantity of movement from the block B.sub.n to the block B.sub.n+1 to transmit information of the motion vector with respect to the picture of the block moved, thus to resultantly compress the quantity of data of moving pictures transmitted.
More particularly, as shown in FIG. 7, for example, is the case where it is detected by comparing two pictures each comprised of a plurality of pixels D as described above that a block, which was located at the position of Ba in a frame preceding in time (block having a size of 3.times.3 dots in the example of FIG. 7), has moved to the position of Bb in the subsequent frame. The above-mentioned motion vector v(x, y) has components (or coordinates) expressed as v(x, y)=(+3, -3). It is to be noted that a vector having such components as shown in FIG. 7 is called a vector of the integer precision.
Further, as shown in FIG. 8, for example, is the case where it is detected by comparing two pictures each comprised of a plurality of pixels D that a block, which was located at the position of Bc in the figure in a frame preceding in time (the size is 3.times.3 dots also in the example of FIG. 8), has moved the position of Bb in the figure in the subsequent frame. The motion vector v(x, y) has components (or coordinate) expressed as v(x, y)=(+2.5, -1.5). It is to be noted that a vector having such components as shown in FIG. 8 is called a vector of half pixel precision.
Meanwhile, in the case where such a compressive coding to transmit motion vector information along with image data is carried out, such motion vector information is used in decoding the compressive coding to construct a pictorial image of the block. Here, as shown in FIG. 8, for example, is the case where a motion vector of the half pixel precision is used to make up or construct a block of Bb in FIG. 8. An approach is employed to determine, by calculation, data constituting a block of Bc in FIG. 8 (interpolated values) from values of respective pixel data of a block having a size larger than that of the block Bc in FIG. 8 thereafter to make up or construct such block of Bb in FIG. 8.
When the above-mentioned block is assumed to be comprised of pixels of 8.times.8 dots, for example, an operational or computational processing as described below is required for making up a block having data of the half pixel precision (interpolated values).
For example, in the block of 8.times.8 dots, consider the case of determining data of the half pixel precision, i.e., interpolated values in a horizontal direction from respective pixel data in the horizontal direction. An approach is employed as shown FIG. 9 to add values of respective adjacent two pixel data of nine pixel data D.sub.H1, D.sub.H2, . . . , D.sub.H9 in the horizontal direction of a block of 9.times.9 dots. The block of 9.times.9 dots has a size larger than that of the block of 8.times.8 dots. In this way each of the added two pixel data can be divided by 2 to assume values thus obtained as interpolated values d.sub.H1, d.sub.H2, . . . d.sub.H8. Namely, in the case of determining interpolated values in the horizontal direction, an interpolated value d.sub.H1 is determined or calculated from pixel data D.sub.H1 and D.sub.H2, an interpolated value d.sub.H2 is determined from pixel data D.sub.H2 and D.sub.H3, an interpolated value d.sub.H3 is determined from pixel data D.sub.H3 and D.sub.H4, an interpolated value d.sub.H4 is determined from pixel data D.sub.H4 and D.sub.H5 an interpolated value d.sub.H5 is determined from pixel data D.sub.H5 and D.sub.H6, an interpolated value d.sub.H6 is determined from pixel data D.sub.H6 and D.sub.H7, an interpolated value d.sub.H7 is determined from pixel data D.sub.H7 and D.sub.H8, and an interpolated value d.sub.H8 is determined from pixel data D.sub.H8 and D.sub.H9. By repeatedly performing such an operation, 64 interpolated values in the horizontal direction can be provided in the block of 8.times.8 dots.
Further, in such a block of 8.times.8 dots, consider the case of determining or calculating interpolated values in a vertical direction from pixel data in the vertical direction. For example, an approach is employed as shown in FIG. 10 to add values of respective adjacent two pixel data in the vertical direction of picture data D.sub.1H1, D.sub.1H2, . . . , D.sub.1H8, and D.sub.2H1, D.sub.2H2, . . . , D.sub.2H8 arranged in two rows in a horizontal direction. Then this approach will divide the added values by 2 to assume the values thus obtained as interpolated values d.sub.v1, d.sub.v2, . . . , d.sub.v8. Namely, in FIG. 10, an interpolated value d.sub.v1 is determined from pixel data D.sub.1H1 and D.sub.2H1, an interpolated value d.sub.v2 is determined from pixel data D.sub.1H2 and D.sub.2H2, an interpolated value d.sub.v3 is determined from pixel data D.sub.1H3 and D.sub.2H3, an interpolated value d.sub.v4 is determined from pixel data D.sub.1H4 and D.sub.2H4, an interpolated value d.sub.v5 is determined from pixel data D.sub.1H5 and D.sub.2H5, an interpolated value d.sub.v6 is determined from pixel data D.sub.1H6 and D.sub.2H6, an interpolated value d.sub.v7 is determined from pixel data D.sub.1H7 and D.sub.2H7, and an interpolated value d.sub.v8 is determined from pixel data D.sub.1H8 and D.sub.2H8. By repeatedly performing such operations, 64 interpolated values in the vertical direction can be provided in the block of 8.times.8 dots.
Further, in such a block of 8.times.8 dots, in order to determine or calculate interpolated values from pixel data at intermediate positions in horizontal and vertical directions, for example, an approach is employed as shown in FIG. 11. This approach will add values of respective four pixel data adjacent in vertical and horizontal directions of pixel data D.sub.1H1, D.sub.1H2, . . . , D.sub.1H9, and D.sub.2H1, D.sub.2H2, . . . , D.sub.2H9. This pixel data is arranged in two rows in a horizontal direction of a block of 9.times.9 dots having a size larger than that of the block of 8.times.8 dots. This approach will divide the added values by 4 to assume the values thus obtained as interpolated values d.sub.M1, d.sub.M2, . . . , d.sub.M8. Namely, in FIG. 11, an interpolated value d.sub.M1 is determined from pixel data D.sub.1H1, D.sub.1H2 and D.sub.2H1, D.sub.2H2, an interpolated value value d.sub.M2 is determined from pixel data D.sub.1H2, D.sub.1H3 and D.sub.2H2, D.sub.2H3, an interpolated value d.sub.M3 is determined from pixel data D.sub.1H3, D.sub.1H4 and D.sub.2H3, D.sub.2H4, an interpolated value d.sub.M4 is determined from pixel data D.sub.1H4, D.sub.1H5 and D.sub.2H4, D.sub.2H5, an interpolated value d.sub.M5 is determined from pixel data D.sub.1H5, D.sub.1H6 and D.sub.2H5, D.sub.2H6, an interpolated value d.sub.M6 is determined from pixel data D.sub.1H6, D.sub.1H7 and D.sub.2H6, D.sub.2H7, an interpolated value d.sub.M7 is determined from pixel data D.sub.1H7, D.sub.1H8 and D.sub.2H7, D.sub.2H8, and an interpolated value d.sub.M8 is determined from pixel data D.sub.1H8, D.sub.1H9 and D.sub.2H8, D.sub.2H9. Thus, 64 interpolated values at intermediate positions in vertical and horizontal directions can be provided in the block of 8.times.8 dots.
As the configuration for determining or calculating interpolated values with the half pixel precision in a block of 8.times.8 dots as described above, there is known an image signal interpolating circuit as shown in FIG. 12, for example. It is to be noted that only the configuration for determining interpolated values in a horizontal direction shown in FIG. 9 is shown for the brevity of explanation. It is further to be noted that there is shown the example for determining interpolated values as stated above at the image signal interpolating circuit on the basis of image data and information read out from a recording medium on which motion vector information is recorded together with that image data.
In FIG. 12, motion vector information is recorded together with the image data on an optical disk 1, for example, as the recording medium. From this optical disk 1, data, recorded is read by a reading device 2. Image data read from the optical disk 1 is sent to a changeover switch 5. When the changeover switch 5 is switched to switched terminal a side, the image data is sent to, e.g., a frame memory 6, and is stored hereinto. This frame memory 6 carries out a write/read operation in accordance with write/read address data delivered from an address generator 4.
Here, the motion vector information of data from the optical disk 1 is detected by a motion vector detector 3. The motion vector information thus detected is sent to the address generator 4. At this address generator 4, on the basis of the motion vector information, readout address data is generated. This readout address is for reading out respective pixel data of a block designated by the motion vector information of image data stored in the frame memory 6.
The pixel data of the block thus read out is sent to a changeover switch 8. When switched terminal a of the changeover switch 8 is selected, the pixel data is transmitted to an image signal interpolating circuit 20 through a terminal 33. This image signal interpolating circuit 20 is comprised of a 9 bit shift register 21, an 8 bit shift register 23, an operational or computational elements 22 for performing additive operation and 1/2 operation (divisional operation by 2). Respective pixel data of the block delivered through the changeover switch 8 are serially delivered to the 9 bit shift register 21. The pixel data outputted in parallel from the 9 bit shift register 21 are respectively sent to eight operational or computational elements for carrying out an operational processing to add respective adjacent two pixel data in a horizontal direction (shown in FIG. 9 as described above) and to divide these added values by 2. Outputs from these operational or computational elements 22 are sent to the 8 bit shift register 23. Data indicative of operation results by the operational or computational elements 22 are serially outputted from the shift register 23. These data are outputted through a terminal 38.
Output of the shift register 23, i.e., data of respective interpolated values are stored for a second time into the frame memory 6, for example, through a changeover switch 9 of which switched terminal a side is selected. Write address data at this time is data based on the motion vector information from the address generator 4.
Image-interpolated image data stored in the frame memory 6, for example, in this way is sent to a monitor 11 through the changeover switch 8 of which switched terminal b side is selected and the changeover switch 10 of which switched terminal a side is selected. At the monitor 11, there is carried out an image display in which an image of the block is moved on the basis of the motion vector information.
Further, while a processing to determine or calculate interpolated values of data read from the optical disk 1 and stored into the frame memory 6, for example, is carried out as described above, data of the next frame is being read from the optical disk 1. The next frame data is stored into a frame memory 7 through the changeover switch 5 of which switched terminal b side is selected. Accordingly, after the processing for determining or calculating interpolated values of data stored in the frame memory 6 is completed, data stored in the frame memory 7 is sent to the image interpolating circuit 20 through the changeover switch 8 of which switched terminal b side is selected. After a processing similar to the above is carried out, processed data are sent to the monitor 11. It is to be noted that, at this time, the switched terminal b side of the changeover switch 9 and the switched terminal b side of the changeover switch 10 are selected.
By carrying out a processing like the so-called double buffer to repeatedly use two frame memories 6, 7, successive moving pictures are displayed on the monitor 11.
It is to be noted that, in connection with the configuration of FIG. 12, similar configurations (not shown) are required in addition to the FIG. 12 configuration in order to determine or calculate interpolated values in a vertical direction and interpolated values at intermediate positions in vertical and horizontal directions. Operational or computational elements of a structure for determining or calculating interpolated values at intermediate positions in vertical and horizontal directions are adapted to perform an operation to divide data delivered thereto by 4.
The above-described image signal interpolating circuit as shown in FIG. 12 requires a shift register (9 bit shift register 21 or 8 bit shift register 23) corresponding to the number of dots (e.g., 8.times.8 dots) of a block to be processed. Accordingly, in the case of attempting to change the size of this block, for example, design must be changed so that the image signal interpolating circuit is in correspondence with the size of the block to be changed. For this reason, cost for design (development cost) becomes high, and it is difficult to make up a widely usable image signal interpolating circuit capable of coping with various block sizes.
In addition, in the conventional image interpolating circuit, it takes much time for processing for interpolative operation, so it is difficult to carry out high speed processing.